﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CapaLogica.CL.Usuario;
using CapaLogica.CL.ComentarioAporte;


namespace CapaLogica.CL.Aporte
{
    public class GestorAporte
    {

        public static int crearAporte(String pAporte, int pidTema)
        {
            try
            {
                int idUsuario = Session.Id;
                Cl_Aporte aporte = new Cl_Aporte(pAporte, Session.Id);
                AportePersistente persistenteAporte = new AportePersistente();
               
               return persistenteAporte.insertarAporte(aporte, pidTema);
               
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }


        public static List<Dictionary<String, Object>> listarAportesDeTema(int pIdTema)
        {
            try
            {
                AportePersistente persistenteAporte = new AportePersistente();
                List<EsAporte> aportes = persistenteAporte.listarAportesDeTema(pIdTema);
                List<Dictionary<String, Object>> datosAportes = new List<Dictionary<string, Object>>();

                Dictionary<String, Object> aporte = null;

                foreach (EsAporte temp in aportes)
                {
                    aporte = new Dictionary<string, Object>();

                    aporte.Add("id", temp.IdAporte );
                    aporte.Add("comentario", temp.Comentario );
                    aporte.Add("fecha", temp.Fecha );
                    aporte.Add("nota", temp.Nota );
                    aporte.Add("modificado", temp.Modificado);
                    aporte.Add("fechaModificacion", temp.FechaModificacion );
                    aporte.Add("idusuario", temp.IdUsuario );
                    aporte.Add("usuario", temp.NombreUsuario );
                    aporte.Add("rol", temp.NombreRol);
                    aporte.Add("comentarios" , GestorComentarioAporte.listarComentariosAporte(Convert.ToInt32( temp.IdAporte)));


                    datosAportes.Add(aporte);
                }

                return datosAportes;
            }
            catch (Exception ex)
            {
                
                throw ex;
            }
           
        }



        

        public static Boolean asignarCalificacionAporte(int pIdAporte, int pNota)
        {            
            try
            {
                AportePersistente persistente = new AportePersistente();
                Cl_Aporte aporte = persistente.buscarAporte(pIdAporte);
                aporte.Nota = pNota;
                persistente.asignarCalificacionAporte(Session.Id, aporte);
                return true;
            }
            catch (Exception ex)
            {
                
                throw ex;
            }
        }


        public static Boolean eliminarAporte(int pIdAporte)
        {
            try
            {
                AportePersistente persistente = new AportePersistente();

                persistente.eliminarAporte(pIdAporte, Session.Id);
                return true;
            }
            catch (Exception ex)
            {

                throw ex;
            }

        }


            public static Boolean modificarAporte(int pidAporte,String pcomentario)
            {
            try
            {
                Boolean modificado = true;
                int idUsuario = Session.Id;
                DateTime fechaM = DateTime.Now; 
                
                AportePersistente persistenteAporte = new AportePersistente();
                Cl_Aporte aporte = new Cl_Aporte(pidAporte, pcomentario, idUsuario, modificado, fechaM);

                persistenteAporte.modificarAporte(aporte);

                return true;
            }
            catch (Exception ex)
            {

                throw ex;
            }

        }
    }
}
